xiete

神神秘秘,神神经经

  • 主页
所有文章 关于我

xiete

神神秘秘,神神经经

  • 主页

项目小问题总结(持续更新)

2018-12-03

1.判断电话是否拨出

项目中有时候需要统计某个电话是否真的拨打出去,可以用下面的方法:

iOS 10(包括10)之前:
在需要用到的地方导入

#import <CoreTelephony/CTCallCenter.h>

#import <CoreTelephony/CTCall.h>

创建一个属性

@property (nonatomic, strong) CTCallCenter *callCenter;

赋值:

self.callCenter = [[CTCallCenter alloc] init];
self.callCenter.callEventHandler = ^(CTCall* call) {
    if ([call.callState isEqualToString:CTCallStateDisconnected])
    {
        NSLog(@"挂断了电话");
    }
    else if ([call.callState isEqualToString:CTCallStateConnected])
    {
        NSLog(@"电话通了");
    }
    else if([call.callState isEqualToString:CTCallStateIncoming])
    {
        NSLog(@"来电话了");

    }
    else if ([call.callState isEqualToString:CTCallStateDialing])
    {
        NSLog(@"正在播出电话");
    }
    else
    {
        NSLog(@"什么也没有");
    }
};

iOS 10之后替换为另外一个:

导入

#import <CallKit/CallKit.h>

创建属性:

@property (nonatomic, strong) CXCallController *call;

赋值:

self.call = [[CXCallController alloc] init];
//设置代理
[self.call.callObserver setDelegate:self queue:nil];


- (void)callObserver:(CXCallObserver *)callObserver callChanged:(CXCall *)call{
    // 注意拨出和结束 outgoing 都是true
    if (call.outgoing){
        NSLog(@"拨出电话");
    }else if (call.hasEnded){
        NSLog(@"结束");
    }
}

2.身份证键盘

有时候项目中有需要输入身份证号码的地方,用系统键盘或者第三方键盘都没有单独的只能输入数字和X的键盘,这时候就只能自定义一个键盘了。

关键操作主要是画一个有数字按钮和X按钮的视图,然后赋值给输入框的inputView属性,另外就是当拿到数字字符或者X字符后,输入到输入框的时候注意光标位置的改变。

具体代码参照github地址

3.监听数组里的内容改变

监听数组里的内容增加,删除,可以使用KVOMutableArray,支持block,支持RAC。

github地址

4.弹出框防键盘遮挡

// fixInfoView 为弹出框contentView;(就是防止被遮挡的视图)
[[[NSNotificationCenter defaultCenter] rac_addObserverForName:UIKeyboardWillShowNotification object:nil]  subscribeNext:^(NSNotification * _Nullable x) {
    STRONG
    // 转换坐标
     CGRect frmae = [self.fixInfoView.superview convertRect:self.fixInfoView.frame toView:[UIApplication sharedApplication].keyWindow];

     CGRect keyboardfrmae = [x.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];

     __block CGFloat value = CGRectGetMaxY(frmae) - keyboardfrmae.origin.y;
    if (self.fixInfoView.superview){
        [UIView animateWithDuration:0.3 animations:^{
            STRONG

            self.fixInfoView.superview.transform = CGAffineTransformTranslate(self.fixInfoView.superview.transform, 0, -value);

    }

}];
[[[NSNotificationCenter defaultCenter] rac_addObserverForName:UIKeyboardWillHideNotification object:nil]  subscribeNext:^(NSNotification * _Nullable x) {
    STRONG
    if (self.fixInfoView.superview){
        [UIView animateWithDuration:0.3 animations:^{
            STRONG
            self.fixInfoView.superview.transform = CGAffineTransformIdentity;
        }];
    }
}];
赏

谢谢你请我吃糖果

支付宝
微信
  • iOS
  • Objective-C

扫一扫,分享到微信

微信分享二维码
提交审核反馈的问题(持续更新)
字符串中识别URL
© 2019 xiete
Hexo Theme Yilia by Litten
  • 所有文章
  • 关于我

tag:

  • iOS
  • Objective-C
  • swift
  • HTTP服务
  • 算法

    缺失模块。
    1、请确保node版本大于6.2
    2、在博客根目录(注意不是yilia根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    3、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: false
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

  • 算法学习

    2019-09-04

    #算法

  • KVOMutableArray的分析和理解

    2018-12-11

    #iOS#Objective-C

  • 提交审核反馈的问题(持续更新)

    2018-12-11

    #iOS

  • 项目小问题总结(持续更新)

    2018-12-03

    #iOS#Objective-C

  • 字符串中识别URL

    2018-10-23

    #iOS#Objective-C

  • 使用Perfect写服务端--初级(二)

    2018-10-15

    #swift#HTTP服务

  • 使用Perfect写服务端--初级(一)

    2018-10-12

    #swift#HTTP服务

湖南湘潭人士,就职于58同城我要车

平时爱好架子鼓,常在深夜敲上一段节奏
谢谢大家

联系方式
qq:354091026
微信:xiaoteshit